home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 October / PCWorld_2001-10_cd.bin / Software / TemaCD / 3dcanvas / 3DCanv11.CAB / Shift Active Object.CS < prev    next >
Text File  |  2001-04-15  |  4KB  |  170 lines

  1. Language = VBScript
  2.  
  3. '*********************************************************************************
  4. ' Purpose: Shifts an Object
  5. '*********************************************************************************
  6.  
  7. Option Explicit          'require variable declarations
  8.  
  9. Sub Main (CanvasApp)
  10.  
  11.     Dim Scene
  12.     Dim ActiveObjectCount
  13.     Dim ShiftX
  14.     Dim ShiftY
  15.     Dim ShiftZ
  16.     Dim NumericShiftX
  17.     Dim NumericShiftY
  18.     Dim NumericShiftZ
  19.     Dim Reply
  20.  
  21.     'get the scene
  22.     Set Scene = CanvasApp.GetActiveScene
  23.  
  24.     'get the active object count
  25.     ActiveObjectCount = Scene.GetActiveObjectCount
  26.  
  27.     'only proceed if there is an active object
  28.     If ActiveObjectCount = 0 Then
  29.         MsgBox "Please select an object."
  30.     Else
  31.         'ask the user how much to shift the object
  32.         ShiftX = InputBox("X Shift?",,"0")
  33.  
  34.         'if they entered anything
  35.         If ShiftX <> "" Then        
  36.  
  37.             'translate the entered string into a numeric value
  38.             On Error Resume Next
  39.             NumericShiftX = CSng(ShiftX)
  40.             Err.Clear
  41.             On Error Goto 0
  42.  
  43.             ShiftY = InputBox("Y Shift?",,"0")
  44.  
  45.             'if they entered anything
  46.             If ShiftY <> "" Then        
  47.  
  48.  
  49.                 'translate the entered string into a numeric value
  50.                 On Error Resume Next
  51.                 NumericShiftY = CSng(ShiftY)
  52.                 Err.Clear
  53.                 On Error Goto 0
  54.  
  55.                 ShiftZ = InputBox("Z Shift?",,"0")
  56.  
  57.                 'if they entered anything
  58.                 If ShiftZ <> "" Then        
  59.  
  60.                     'translate the entered string into a numeric value
  61.                     On Error Resume Next
  62.                     NumericShiftZ = CSng(ShiftZ)
  63.                     Err.Clear
  64.                     On Error Goto 0
  65.  
  66.                     'Ask them if they want to shift using world coordinates
  67.                     Reply = MsgBox("Shift Using World Coordinates?", 3)
  68.                     If Reply <> vbCancel Then
  69.                         Shift Scene, NumericShiftX, NumericShiftY, NumericShiftZ, Reply
  70.                     End if
  71.                 End if
  72.             End if
  73.         End if
  74.     End If    
  75. End Sub
  76.  
  77.  
  78. Sub Shift (Scene, ShiftX, ShiftY, ShiftZ, World)
  79.  
  80.     Dim Object
  81.     Dim PointCount
  82.     Dim PointIndex
  83.     Dim PointX
  84.     Dim PointY
  85.     Dim PointZ
  86.  
  87.     'get the active object (right now there can only be one)
  88.     Set Object = Scene.GetActiveObject(0)
  89.  
  90.     'if they asked to shift in world coordinates, let's transform to world coordinates    
  91.     If World = vbYes then
  92.         Object.Transform
  93.     End if
  94.  
  95.     'get the number of points in the object
  96.     PointCount = Object.GetPointCount
  97.     
  98.     'Run through the points shifting them
  99.     For PointIndex = 0 to PointCount - 1
  100.         'get the point
  101.         Object.GetPoint PointIndex, PointX, PointY, PointZ
  102.     
  103.         'shift the point
  104.         PointX = PointX + ShiftX
  105.         PointY = PointY + ShiftY
  106.         PointZ = PointZ + ShiftZ
  107.  
  108.         'set the point
  109.         Object.SetPoint PointIndex, PointX, PointY, PointZ
  110.     Next
  111.  
  112.     'if they asked to shift in world coordinates, let's inverse transform to model coordinates    
  113.     If World = vbYes then
  114.         Object.InverseTransform
  115.     End if
  116.  
  117.     'finally write a Script operation layer to save the change
  118.     Object.WriteScriptOperationLayer
  119.  
  120. End Sub
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.